علوم کامپیوتر چیست؟
من- بله
آقای X- چه رشتهای؟
من-علوم کامپیوتر
آقای X- علوم کامپیوتر! همون مهندسی کامپیوتر؟
...
گفتگوی بالا یا مشابه آن بارها برای من اتفاق افتاده است. در کشور ما بیشتر آدمها با مهندسی کامپیوتر آشنایی دارند، یا حداقل اسم این رشته را شنیدهاند، و در بیشتر دانشگاههای کشور رشتهی مهندسی کامپیوتر گرایش نرمافزار و سختافزار وجود دارد، اما تعداد بسیار محدودی از دانشگاهها رشتهای به نام علوم کامپیوتر را در لیست رشتههای خود دارند. برای همین من معمولاً برای این که از پاسخ دادن فرار کنم این جمله را میگفتم «همون مهندسی نرمافزار، یک کم ریاضیش بیشتر».
پاسخ به این سوال که «علوم کامپیوتر چیست؟» کار سادهای نیست. یک راه خوب برای رسیدن به یک جواب مناسب برای سوال مورد نظرمان این است که ابتدا سوال سادهتری را مورد بررسی قرار دهیم. علوم کامپیوتر از چه زمانی به عنوان یک شاخهی مستقل از دیگر شاخههای علم مطرح شده است؟ علوم کامپیوتر، علمی بسیار جوان است این رشته به عنوان یک شاخهی مجزا برای اولین بار در دهههای ۱۹۵۰ و ۱۹۶۰ میلادی در دانشگاههای جهان مطرح شدهاست. (برای اطلاعات بیشتر اینجا را ببینید). اما چه اتفاقاتی در آن دوره رخ داده است که باعث شده شاخهای به نام علوم کامپیوتر تاسیس شود؟

اولین عامل اصلی پاگرفتن علوم کامپیوتر، پیشرفت نظریهی محاسبه در دهههای ۱۹۳۰ و ۱۹۴۰ است. در سال ۱۹۲۸ ریاضیدان آلمانی دیوید هیلبرت، ۲۳ مساله را به عنوان مسایل اصلی ریاضی در آینده مطرح کرد که ریاضیدانها باید به آن بپردازند. سه تا از این مسایل تاثیر گستردهای بر شکلگیری علوم کامپیوتر و تاسیس این شاخه از دانش بشری گذاشت. در سال ۱۹۳۱ منطقدانی به نام کرت گدل به دو پرسش از سه پرسش مطرح شده پاسخ داد و فردی به نام آلن تورینگ در سال ۱۹۳۶ با معرفی مدلی ریاضی از یک ماشین محاسبهگر، که بعدها به ماشین تورینگ معروف شد، راه حلی برای سومین پرسش ارایه کرد. این اتفاقات باعث انقلابی در نظریهی محاسبه شد که نخستین گامهای بلند در شکلگیری و پیشرفت علوم کامپیوتر بود. اما نکتهی مهمی که باید به آن اشاره کرد این است که، رابطهی علوم کامپیوتر و ابزاری به اسم کامپیوتر مانند رابطهی زیستشناسی با میکروسکوپ به عنوان ابزار مورد استفاده در زیست شناسی نیست. تاثیر متقابل کامپیوتر و علوم کامپیوتر بسیار گسترده است. اختراع ترانزیستور، و وقوع جنگ جهانی دوم که نیاز به ابزار محاسباتی در آن به شدت احساس میشد، سبب شد تا سرمایهگذاری گستردهای برای ساخت ماشینهای محاسبهگر انجام پذیرد. بعد از این اتفاقات بود که کامپیوتر به مفهومی که ما میشناسیم پا به این دنیا گذاشت. میتوان ادعا کرد که اگر پیشرفتهای دههی ۱۹۵۰ در زمینهی ساخت کامپیوتر نبود، هیچگاه علوم کامپیوتر به عنوان یک شاخهی مستقل درمیان علوم شکل نمیگرفت. درواقع حضور مدلهای ریاضی برای ماشین محاسبهگر از یکسو و پیشرفت علم الکترونیک از سوی دیگر باعث شد دانشمندها بتوانند ماشینهای الکترونیکی معادل مدلهای ریاضی موجود بسازند که میتوانستند محاسبات ریاضی را با دقت و سرعت بالایی انجام دهند.
اما این تنها آغاز راه بود، نیاز روز افزون انسانها به محسابه و استفاده از اطلاعات باعث سرمایه گذاری گسترده بر روی این ابزار نوپا و علوم مربوط به آن شد، در نتیجه کامپیوتر به عنوان یک ابزار محاسبهگر که هر روز توانایی بیشتری برای پاسخگویی به نیازهای بشری پیدا میکرد با سرعت باورنکردنی وارد زندگی روزمره انسانها شد. این گسترش باعث تعریف مسایل جدید برای علوم کامپیوتر و رشد سریع این علم نوپا در زمینههای مختلف گردید. از مسایلی چون طراحی و بررسی ویژگیهای قطعات کوچک الکترونیکی برای کامپیوتر تا سیستمهای ارتباطی گستردهای در سطح جهانی مانند اینترنت، و از مسایل کاملا محض ریاضی مانند نظریه گراف و منطق تا مسایل کاملا کاربردی مانند طراحی سیستمعامل کامپیوتر شخصی شما.
با توجه به مطالب بالا اگر بخواهیم تعریفی برای علوم کامپیوتر ارایه دهیم، باید بگوییم علوم کامپیوتر دانش بررسی کامپیوترها است، که بررسی تواناییها و ناتوانیهای کامپیوتر را شامل میشود؛ کارهایی که یک کامپیوتر قابلیت انجام آن را دارد و کارهایی که یک کامپیوتر قابلیت انجام آن را ندارد. البته منظور از کامپیوتر هر ماشین محاسبهگر، از یک ابزار نظری مانند ماشین تورینگ گرفته تا پردازنده یک تلفن همراه و یا یک ابرکامپیوتر، است.
به راحتی نمیتوان قضاوت کرد که کدام یک از مباحث فوق اهمیت بیشتری دارد، و باید آن را به عنوان جریان اصلی علوم کامپیوتر درنظر گرفت، و کدام یک کم اهمیتتر است و درشاخههای فرعی قرار میگیرد. اما میتوان ادعا کرد که تا مدتها جریان اصلی علوم کامپیوتر بیشتر به مباحثی پرداخته که مربوط به چگونگی استفاده و ساخت کامپیوتر میشد. مباحثی چون زبانهای برنامه نویسی، سیستمهای عامل، الگوریتمها، طراحی سختافزار و .... سرعت پیشرفت این مباحث بسیار سریع بوده است.
پیشرفتهای سریع و چشمگیر در این مباحث و ورود گستردهی کامپیوتر به زندگی روزمرهی انسان مباحث نظری جدیدی را به مسایل اصلی علوم کامپیوتر اضافه کردهاست. بهعنوان نمونه گسترش اینترنت و شبکههای اجتماعی، نظریهی گراف را، که قابلیت زیادی برای مدلسازی این شبکهها دارد ، تبدیل به شاخهای مهم در ریاضیات کاربردی و علوم کامپیوتر کردهاست. از دیگر شاخههای مهم علوم کامپیوتر میتوان به هوش مصنوعی و علاقهی انسان به طراحی و ساخت موجودات هوشمند اشاره کرد.
علوم کامپیوتردر علوم دیگر نیز تاثیر گستردهای داشتهاست. شبیهسازی پدیدههای فیزیکی و فیزیک محاسباتی، استفادهی وسیع از روبوتها در تحقیقات فضایی و دیگر محیطهایی که انسان قادر به فعالیت در آن نیست، تشخیص بیماریها به کمک دستگاهها و الگوریتمهای کامپیوتری و … نمونههایی از این تاثیر میباشند.
در این پرونده سعی میکنیم شاخههای مهم علوم کامپیوتر را معرفی کنیم شکل زیر تقسیم بندی که این پرونده بر اساس آن ارائه خواهد شد را نمایش میدهد.
